Rust moderno sfrutta programmazione funzionale principi per offrire astrazioni a costo zero. Trattando le funzioni come valori e i dati come flussi immutabili, Rust permette operazioni I/O espressive operazioni I/O senza sacrificare le prestazioni.
1. L'ambiente e le chiusure
A differenza delle funzioni standard, le chiusure possono catturare il loro ambiente. Usano i tratti Fn, FnMuto FnOnce per gestire il trasferimento di proprietà nelle chiusure, garantendo che la sicurezza della memoria sia mantenuta anche quando le funzioni portano uno stato.
let v1_iter = v1.iter().map(|x| x + 1);
// v1_iter è lazy e non è ancora stata eseguita!
2. Pipeline dichiarative
Utilizzando adattatori di iteratore, gli sviluppatori sostituiscono cicli annidati verbosi con logica concisa. Il metodo iter_mut consente trasformazioni funzionali sicure ed in loco, mentre il compilatore ottimizza queste chiamate di alto livello in codice assembly equivalente ai cicli scritti manualmente.
3. Benchmark delle prestazioni
Quando compilate in un profilo dev o release, la funzione search dimostra la sua efficienza. I benchmark statistici mostrano: test bench_search_iter ... bench: 19.234.900 ns/iter. Questo conferma che queste astrazioni sono veramente a costo zero.
collect() o sum().